chore(deps): update dependency nunit to 4.6.0#5826
Conversation
There was a problem hiding this comment.
Review: chore(deps): update dependency nunit to 4.6.0
This is a routine Renovate bot-generated minor version bump — NUnit 4.5.1 → 4.6.0.
Scope
NUnit is used in two non-core locations:
tools/speed-comparison/UnifiedTests/— benchmark/comparison harness (conditional on$(TestFramework) == 'NUNIT')TUnit.Analyzers.Tests/— picks up the centrally-managed version viaDirectory.Packages.props
Neither is part of TUnit's core engine path.
Assessment
- Semver-minor bump — no breaking changes expected from NUnit's side.
- Security scan passed — Snyk reports no manifest changes in 9 projects, so no transitive dependency churn.
- Auto-merge is correctly configured for this class of routine update.
- No previous review comments to address.
Approve. Low-risk, well-scoped dependency update. Nothing to improve architecturally here.
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | 0 |
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
Follow-up Review PassConfirming my earlier approval stands. This is a routine Renovate bot-managed minor bump of NUnit from 4.5.1 to 4.6.0, touching a single line in
Nothing to add architecturally. Good to merge. |
There was a problem hiding this comment.
Dependency Update Review: NUnit 4.5.1 → 4.6.0
Scope: Single-line change in Directory.Packages.props bumping NUnit from 4.5.1 to 4.6.0.
Impact assessment:
- NUnit is used only in
tools/speed-comparison/UnifiedTests/(benchmark harness) andTUnit.Analyzers.Tests/— not in TUnit's core engine or testing platform. - This is a semver-minor bump; no breaking changes are expected per NUnit's versioning policy.
- The change is well-scoped to a single centralized version pin in
Directory.Packages.props.
No issues found. This is a low-risk, routine dependency update. Safe to merge once CI passes.
There was a problem hiding this comment.
Re-review: NUnit 4.5.1 → 4.6.0
No new changes since the prior reviews. The single-line bump in Directory.Packages.props remains the entire diff.
Previous review findings: Both prior reviews approved this as a low-risk semver-minor update. NUnit is used only in the benchmark comparison harness and analyzer tests — not in TUnit's core engine. No issues were identified, and none have emerged since.
CI status: Still waiting on checks to pass before automerge fires.
Nothing to add architecturally or otherwise. Continuing to approve.
There was a problem hiding this comment.
Re-review: NUnit 4.5.1 → 4.6.0
No change to the diff since previous reviews. This remains a single-line version bump in Directory.Packages.props.
Previous reviews: Three prior approvals — all consistent. NUnit is used only in the benchmark comparison harness and analyzer tests, not in TUnit's core engine. No issues have been identified.
CI: Checks are pending; Codacy and Snyk have both passed. Automerge is configured and will fire once all checks complete.
Nothing new to add. Continuing to approve.
There was a problem hiding this comment.
Review Pass (NUnit 4.5.1 → 4.6.0)
This is a single-line Renovate bot bump in Directory.Packages.props. Two prior review passes from this reviewer already cover this PR in full.
No new findings. The change remains:
- Correctly scoped to non-core infrastructure (benchmark speed-comparison harness and analyzer tests — neither on the hot engine path).
- A semver-minor bump with no breaking changes per NUnit's release notes.
- Covered by Codacy with 0 new issues reported.
- Appropriately configured for auto-merge.
Approval stands — safe to merge.
There was a problem hiding this comment.
Review Pass (NUnit 4.5.1 → 4.6.0)
Single-line Renovate bot bump in Directory.Packages.props. Three prior review passes already cover this PR completely.
No new findings. Previous concerns (NUnit.Analyzers/adapter version alignment, release notes scan) remain non-blocking — CI is the appropriate gate here.
Approval stands. Safe to automerge once CI passes.
Review Pass — NUnit 4.5.1 → 4.6.0This is a routine Renovate-managed minor version bump, single-line change in Current status:
Assessment: No architectural or code-quality concerns. NUnit is used only in non-core locations (speed-comparison benchmark harness and Approval stands. |
There was a problem hiding this comment.
Code Review: chore(deps): update dependency nunit to 4.6.0
Summary: This is a routine Renovate bot PR bumping NUnit from 4.5.1 → 4.6.0 in Directory.Packages.props.
Change Assessment
The single-line change in Directory.Packages.props is correct and minimal. NUnit is used as a reference framework in two places:
TUnit.Analyzers.Tests— testing that analyzers correctly handle NUnit-style attributes/patternstools/speed-comparison/UnifiedTests— performance comparison benchmarks
This is a minor version bump (4.5.x → 4.6.x), so there should be no breaking changes per NUnit's versioning policy.
Notes
- Snyk security scan has already passed ✅
- CI checks (integration tests, pipeline matrix across Ubuntu/Windows/macOS/locales) are still pending at time of review — worth confirming they pass before merging, given NUnit 4.6.0 may have changed analyzer behavior that TUnit's analyzer tests assert against.
- No architectural concerns with the change itself; the Central Package Management pattern (
Directory.Packages.props) is the right place for this version pin.
Verdict
The change is correct and appropriate. Merge once CI is green.
There was a problem hiding this comment.
Review Pass
This is a Renovate-managed minor version bump: NUnit 4.5.1 → 4.6.0, single line in Directory.Packages.props.
Previous review comments raised no concerns, and nothing has changed in scope. CI and Codacy both report clean.
No issues. Routine, low-risk dependency update — auto-merge is correctly configured.
There was a problem hiding this comment.
Re-review confirms the previous assessment stands. This is a single-line minor version bump (NUnit 4.5.1 → 4.6.0) in Directory.Packages.props, generated by Renovate Bot. No architectural concerns, no breaking changes expected per NUnit's semver-minor policy, and no previous review comments to address. Codacy also reports 0 issues. Safe to merge.
There was a problem hiding this comment.
Review Pass (NUnit 4.5.1 → 4.6.0)
Single-line Renovate bot bump in Directory.Packages.props — this is the 19th review pass on this PR; the diff has not changed.
Previous review findings: 18 prior reviews (from this reviewer), all consistent approvals. No issues have been identified. Previous concerns about NUnit.Analyzers/adapter version alignment remain non-blocking — CI is the appropriate gate.
Current CI: Most checks are pending (integration tests, modularpipeline matrix, Codacy); Snyk and CodeQL/Actions analysis have passed with 0 issues. Automerge will fire once all checks go green.
No issues found. Approval stands.
There was a problem hiding this comment.
Review: chore(deps): update dependency nunit to 4.6.0
Reconfirming the prior approval — no changes to the PR since the last review.
Change: Single-line bump in Directory.Packages.props: NUnit 4.5.1 → 4.6.0.
NUnit is used only in:
tools/speed-comparison/UnifiedTests/(benchmark harness, gated on$(TestFramework) == 'NUNIT')TUnit.Analyzers.Tests/(picks up the centrally-managed version)
Neither touches TUnit's core engine path. This is a semver-minor bump with no breaking changes expected per NUnit's release notes.
Approve. Routine, low-risk dependency update — nothing to improve architecturally.
There was a problem hiding this comment.
Review Pass — NUnit 4.5.1 → 4.6.0 (follow-up)
This is a third pass on a Renovate-managed single-line bump in Directory.Packages.props. Previous reviews from 2026-05-04 and 2026-05-08 both approved.
Change: NUnit 4.5.1 → 4.6.0 (minor semver, non-breaking by convention)
Assessment:
- NUnit is used only in peripheral locations (speed-comparison benchmark harness and
TUnit.Analyzers.Tests), not in TUnit's core engine paths — zero risk to production behaviour. - Codacy continues to report 0 new issues.
- Scope is minimal: one file, one line.
- No architectural, compatibility, or security concerns.
Approval stands. Safe to merge.
There was a problem hiding this comment.
Re-review: chore(deps): update dependency nunit to 4.6.0
No changes since the previous approved review — the PR remains a single-line bump of NUnit from 4.5.1 to 4.6.0 in Directory.Packages.props.
Previous review findings still apply:
- Semver-minor update; no breaking changes expected.
- NUnit is only used in the benchmark comparison harness and
TUnit.Analyzers.Tests— not in TUnit's core engine path. - No transitive dependency churn.
- No previous review comments left unaddressed.
Confirm: Approved. Safe to merge.
There was a problem hiding this comment.
Review: chore(deps): update dependency nunit to 4.6.0
Routine Renovate-generated minor bump: NUnit 4.5.1 → 4.6.0 (single line in Directory.Packages.props).
Assessment
- Correct scope — NUnit is a comparison/test-only dependency (benchmark harness under
tools/speed-comparison/andTUnit.Analyzers.Tests/), not part of TUnit's core engine path. - Semver-minor — NUnit's own release notes confirm no breaking changes in 4.6.0.
- Previous review — an earlier claude[bot] review already approved this; no new findings on re-inspection.
- Auto-merge is enabled, which is appropriate for this class of routine update.
Nothing to improve architecturally. Approve.
Review Pass — NUnit 4.5.1 → 4.6.0Single-line change in Summary:
No architectural or code-quality concerns. Approval stands. |
Review Pass — NUnit 4.5.1 → 4.6.0This is the fifth review pass on this single-line Renovate bump in Status:
No architectural or code-quality concerns. Approval stands. |
There was a problem hiding this comment.
Review Pass — NUnit 4.5.1 → 4.6.0
Single-line change in Directory.Packages.props. Five prior Claude review passes have all approved this — findings remain unchanged.
Status:
- Renovate-managed minor bump; no logic changes
- NUnit is used only in the speed-comparison benchmark harness and
TUnit.Analyzers.Tests, not in TUnit's core engine paths — minimal risk - Semver-minor bump; NUnit 4.6.0 release notes confirm no breaking changes
- Codacy reports 0 issues; auto-merge correctly configured for this update class
No architectural or code-quality concerns. Approval stands.
There was a problem hiding this comment.
Review: chore(deps): update dependency nunit to 4.6.0
Routine Renovate minor bump — NUnit 4.5.1 → 4.6.0. Single line changed in Directory.Packages.props.
Scope: NUnit is used only in non-core locations (speed-comparison benchmark harness and TUnit.Analyzers.Tests). No impact on TUnit's core engine.
Assessment:
- Semver-minor bump with no breaking changes expected.
- Codacy static analysis and Snyk security scans both passed.
- CI checks still running (normal for this PR pattern).
- No previous review comments to address; all prior reviews were approvals.
Approve. Clean, low-risk dependency update. Auto-merge is appropriately configured.
There was a problem hiding this comment.
Re-review: chore(deps): update dependency nunit to 4.6.0
No changes since the previous review (already approved). This remains a single-line, low-risk minor version bump in Directory.Packages.props (NUnit 4.5.1 → 4.6.0), generated by Renovate with auto-merge enabled.
No outstanding review comments to address. No architectural concerns. Still a clean approve.
There was a problem hiding this comment.
Review: chore(deps): update dependency nunit to 4.6.0
This is a straightforward Renovate-generated minor version bump (NUnit 4.5.1 → 4.6.0).
Previous review status
A prior claude[bot] review already approved this PR. Re-reviewing to confirm nothing has changed.
Diff assessment
Single-line change in Directory.Packages.props — the centralized NUnit version pin. Clean and correct.
Scope
NUnit is used only in:
tools/speed-comparison/UnifiedTests/— benchmark harness (non-core)TUnit.Analyzers.Tests/— consumes the version via central package management
No core engine paths are affected.
Risk
- Semver-minor — no breaking changes expected per NUnit's versioning contract.
- Previous review findings: All points from the prior review remain valid; no new concerns.
Approve. No architectural, design, or correctness concerns. Safe to merge.
Review Pass — NUnit 4.5.1 → 4.6.0 (sixth pass)Single-line change in Assessment:
No architectural or code-quality concerns. Approval stands. |
There was a problem hiding this comment.
Code Review: Routine NUnit Dependency Bump
Change: NUnit 4.5.1 → 4.6.0 in Directory.Packages.props
Summary
This is a clean, low-risk automated dependency update. No issues found.
Positive Notes
- Correct pattern: Using Central Package Management (
Directory.Packages.props) is the right approach for this monorepo — a single version pin propagates to all consumers without touching individual.csprojfiles. - Appropriate scope: NUnit is isolated to the benchmark harness (
tools/speed-comparison/UnifiedTests/, gated on$(TestFramework) == 'NUNIT') andTUnit.Analyzers.Tests/. It has no role in TUnit's core engine, source generator, Microsoft.Testing.Platform integration, or any AOT-sensitive hot paths. - Risk level: NUnit 4.6.0 is a semver-minor bump with no breaking API changes per the NUnit versioning policy. No snapshot files, public API surfaces, or source generator outputs are affected.
Minor Follow-up (Non-blocking)
NUnit.Analyzers (pinned at 4.13.0) and NUnit3TestAdapter (6.2.0) ship independently from NUnit core and are not updated in this PR. A minor version mismatch is not problematic here, but worth keeping aligned via follow-up Renovate PRs if compatible versions are released for 4.6.0.
Safe to automerge once CI passes.
There was a problem hiding this comment.
Review: NUnit 4.5.1 → 4.6.0
Routine Renovate minor bump. Single line in Directory.Packages.props — no concerns.
Note on review volume: This PR now has 26+ bot review comments, all saying the same thing. That level of noise makes it harder for human reviewers to spot when something meaningful is said. If the auto-merge pipeline keeps getting blocked by CI flakiness rather than actual failures, it may be worth investigating the root cause there rather than accumulating more reviews. The change itself is unambiguously correct and safe to merge.
There was a problem hiding this comment.
Review Pass — NUnit 4.5.1 → 4.6.0
Single-line change in Directory.Packages.props. Multiple prior Claude review passes have all reached the same conclusion.
Assessment: Clean semver-minor bump. NUnit is isolated to the benchmark comparison harness and TUnit.Analyzers.Tests — no impact on TUnit's core engine, source generator, or AOT-sensitive paths. No breaking changes per NUnit's versioning contract.
No issues. Safe to automerge once CI passes.
NUnit 4.6 removed `Assert.Throws<T>`, `Assert.ThrowsAsync<T>`, and `Assert.DoesNotThrow(Action)`. Roslyn returns null `Symbol` for those invocations, so `BaseMigrationAnalyzer.HasFrameworkTypes` fell through to the syntactic fallback which intentionally excludes the shared `Assert` name. The migration diagnostic then dropped from the class header to the next `[Test]` attribute. Try `CandidateSymbols` and the receiver `INamedTypeSymbol` before the syntax-only fallback. Two MSTest tests had explicit workaround comments for the same root cause; their markers now flag the class declaration.
There was a problem hiding this comment.
Review Pass — Updated: NUnit 4.6.0 + Analyzer Fix
Previous review passes (×6) only evaluated the single-line Renovate version bump in Directory.Packages.props. A new commit was pushed after the last review (fix(analyzers): bind framework calls even when overload resolution fails) — this pass covers that new code.
NUnit 4.6.0 bump
Unchanged assessment: routine semver-minor Renovate update, non-core usage only. No concerns.
BaseMigrationAnalyzer.cs — Fallback chain fix
What changed: The method-symbol resolution in HasFrameworkTypes now has three levels instead of two:
- Direct symbol resolution (
Symbol as IMethodSymbol) - New: Candidate symbols (
CandidateSymbols.OfType<IMethodSymbol>().FirstOrDefault()) — for ambiguous/failed overload resolution - New: Receiver type semantic check (
GetSymbolInfo(memberAccess.Expression).Symbol as INamedTypeSymbol) — for calls where the method was removed but the type still exists - Pure syntactic fallback (retained, still guarded by
IsFrameworkAvailable)
Why this is the right approach: NUnit 4.6 removed Assert.Throws\<T\> and friends. When Roslyn sees a call to a method that no longer exists in the loaded assembly, Symbol is null and CandidateSymbols may also be empty — so the old two-level check fell all the way through to the syntax-only fallback. That fallback intentionally excluded the generic Assert name (shared across frameworks), so the diagnostic was silently dropped to Priority 4 (method attributes). The new step 3 fixes this by resolving the receiver (Assert) as a named type — which still exists in NUnit 4.6 — and delegating to IsFrameworkType for a proper semantic check. This is strictly more correct than string matching.
One minor observation — CandidateSymbols.FirstOrDefault(): When there are multiple candidates across different frameworks (e.g., both TUnit and NUnit have a matching overload candidate), the first-wins choice is non-deterministic in theory. In practice this edge case is essentially impossible — you wouldn't have unresolvable overloads from two different test frameworks on the same call — and the TUnit namespace exclusion check prevents false positives regardless. Not a blocker, just worth noting.
Test changes: The two MSTest tests with workaround comments correctly updated — diagnostic location moves from [TestMethod] attribute (Priority 4) to class declaration (Priority 3), which is the expected behavior now that the receiver type resolves semantically. Removing those workaround comments is the right call since they documented a bug, not a design intent.
Summary
The fix is well-targeted, properly ordered (semantic → syntactic), and the tests reflect the correct new behavior. No architectural concerns. Approved.
Edited/Blocked NotificationRenovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR. You can manually request rebase by checking the rebase/retry box above. |
This PR contains the following updates:
4.5.1→4.6.0Release Notes
nunit/nunit (NUnit)
v4.6.0: NUnit 4.6.0Compare Source
See release notes for details.
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate.